package logo.lang;

/**
 * Visitor.java
 *
 *
 * @author Ferron Hanse
 */

public interface Visitor {

		//statements
    public Object visitSequence(IRCmdSeq seq, Object arg) throws LogoException, Exception;

		//expressions
		
    public Object visitForward(IRCmdForward cmd, Object arg) 	throws LogoException, Exception;
    public Object visitBackward(IRCmdBackward cmd, Object arg) 	throws LogoException, Exception;
    public Object visitStop(IRCmdStop cmd, Object arg) 	throws LogoException;
	public Object visitIf(IRCmdIf irCmdIf, Object info) throws Exception;
	public Object visitDiv(IRExpDiv irExpDiv, Object info) throws LogoException, Exception;
	public Object visitEq(IRExpEq irExpEq, Object info) throws LogoException, Exception;
	public Object visitConst(IRExpConst irExpConst, Object info) throws LogoWrongTypeException;
	public Object visitMod(IRExpMod irExpMod, Object info) throws LogoWrongTypeException, LogoException, Exception;
	public Object visitMul(IRExpMul irExpMul, Object info) throws LogoException, Exception;
	public Object visitSub(IRExpSub irExpSub, Object info) throws LogoException, Exception;
	public Object visitProc(IRCmdProc irCmdProc, Object info) throws Exception;
	public Object visitPenup(IRCmdPenup irCmdPenup, Object info);
	public Object visitRight(IRCmdRight irCmdRight, Object info) throws LogoException, Exception;
	public Object visitRepeat(IRCmdRepeat irCmdRepeat, Object info) throws LogoException, Exception;
	public Object visitPendown(IRCmdPendown irCmdPendown, Object info);
	public Object visitHide(IRCmdHide irCmdHide, Object info);
	public Object visitLeft(IRCmdLeft irCmdLeft, Object info) throws LogoException, Exception;
	public Object visitCall(IRCmdCall irCmdCall, Object info) throws LogoException, Exception;
	public Object visitSetXY(IRCmdSetXY irCmdSetXY, Object info) throws LogoException, Exception;
	//public Object visitProgram(IRProc irProc, Object info) throws Exception;
	public Object visitVar(IRExpVar irExpVar, Object info) throws LogoException;
	public Object visitClear(IRCmdClear irCmdClear, Object info);
	public Object visitForever(IRCmdForever irCmdForever, Object info) throws Exception;
	public Object visitSetBackColour(IRCmdSetBackColour irCmdSetBackColour,
			Object info) throws LogoException, Exception;
	public Object visitSeth(IRCmdSeth irCmdSeth, Object info) throws LogoException, Exception;
	public Object visitSetPenColour(IRCmdSetPenColour irCmdSetPenColour,
			Object info) throws LogoException, Exception;
	public Object visitShow(IRCmdShow irCmdShow, Object info);
	public Object visitAdd(IRExpAdd irExpAdd, Object info) throws LogoException, Exception;
	public Object visitExpt(IRExpExpt irExpExpt, Object info) throws LogoWrongTypeException, LogoException, Exception;
	public Object visitGt(IRExpGt irExpGt, Object info) throws LogoWrongTypeException, LogoException, Exception;
	public Object visitLt(IRExpLt irExpLt, Object info) throws LogoException, Exception;
	public Object visitProg(IRProgram irProgram, Object info) throws LogoException, Exception;
	public Object visitHome(IRCmdHome irCmdHome, Object info);
		


}// Visitor
